home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / music_utilities / pt008.dms / pt008.adf / gmcrep.s < prev    next >
Text File  |  1988-07-25  |  7KB  |  424 lines

  1. bset #1,$bfe001  ;**** LED ****
  2.  
  3. lea   MUSICDATA,a0      ;pointer to datablock to play 
  4. bsr   Mu_startmusic     ;start music
  5. loop:
  6. btst #6,$bfe001
  7. bne loop         ;wait for mouseclick
  8. bsr   MU_stopmusic      ;stop music
  9. rts            ;EXIT program
  10.  
  11. *******************************************************
  12. ******** GameMusicCreator Replay-routine v1.0 *********
  13. *******************************************************
  14. MU_startmusic:
  15. move.l  a0,MU_data
  16. move.l  a0,MU_tablepos
  17. move.l  a0,MU_songpointer
  18. add.l   #242,MU_tablepos
  19. add.l   #444,MU_songpointer
  20. move.w  #64,MU_patterncount
  21. clr.w   $dff0a8
  22. clr.w   $dff0b8
  23. clr.w   $dff0c8
  24. clr.w   $dff0d8
  25. move.w  #$f,$dff096
  26. clr.l   MU_vol0
  27. clr.l   MU_vol2
  28. clr.l   MU_pospointer
  29. clr.w   MU_songspeed
  30. clr.w   MU_note0
  31. clr.w   MU_note1
  32. clr.w   MU_note2
  33. clr.w   MU_note3
  34. clr.w   MU_slide0
  35. clr.w   MU_slide1
  36. clr.w   MU_slide2
  37. clr.w   MU_slide3
  38. clr.w   MU_stop
  39. clr.l   MU_chan0
  40. clr.l   MU_chan1
  41. clr.l   MU_chan2
  42. clr.l   MU_chan3
  43. move.w  #6,MU_songstep
  44. move.l  a0,a2
  45. add.l   #244,a2
  46. move.l  240(a0),d1
  47. sub.l   #1,d1
  48. clr.l   d0
  49. MU_sizeloop:
  50. move.w  (a2)+,d2
  51. cmp.w   d2,d0
  52. bge     MU_nosizeadd
  53. move.w  d2,d0
  54. MU_nosizeadd:
  55. dbf     d1,MU_sizeloop
  56. add.l   #1024,d0
  57. move.l  a0,a1
  58. add.l   #444,a1
  59. add.l   d0,a1
  60. move.l  #14,d7
  61. bsr     MU_calcins
  62. move.l  $6c,MU_oldirq+2
  63. move.l  #MU_interrupt,$6c
  64. rts
  65.  
  66. MU_calcins:
  67. cmp.l   #0,(a0)
  68. bne     MU_calcit
  69. add.l   #16,a0
  70. dbf     d7,MU_calcins
  71. rts
  72. MU_calcit:
  73. move.l  (a0),d0
  74. move.l  8(a0),d1
  75. sub.l   d0,d1  ;repeat
  76. move.l  a1,(a0)
  77. move.l  a1,d0
  78. add.l   d1,d0
  79. move.l  d0,8(a0) ;set repeat
  80. cmp.w   #2,12(a0)
  81. bne     mu_looping
  82. move.l  #MU_empty,8(a0)
  83. mu_looping:
  84. clr.l   d0
  85. move.w  4(a0),d0 ;add sampletable
  86. lsl.l   #1,d0
  87. add.l   d0,a1
  88. add.l   #16,a0
  89. dbf     d7,MU_calcins
  90. rts
  91.  
  92. MU_stopmusic:
  93. move.l  MU_oldirq+2,$6c
  94. clr.w   $dff0a8
  95. clr.w   $dff0b8
  96. clr.w   $dff0c8
  97. clr.w   $dff0d8
  98. move.w  #$f,$dff096
  99. rts
  100. MU_interrupt:
  101. movem.l  d0-d7/a0-a6,-(a7)
  102. btst     #5,$dff01f
  103. beq      MU_novertblank
  104. bsr      MU_playsong
  105. MU_novertblank:
  106. movem.l  (a7)+,d0-d7/a0-a6
  107. MU_oldirq:  jmp $0
  108. MU_playsong:
  109. bsr     MU_everyvert
  110. add.w   #1,MU_songspeed
  111. move.w  MU_songstep,d0
  112. cmp.w   MU_songspeed,d0
  113. ble     MU_okplay
  114. rts
  115. MU_okplay: 
  116. clr.w   MU_songspeed
  117. add.w   #1,MU_patterncount
  118. cmp.w   #65,MU_patterncount
  119. bne     MU_playit
  120. MU_setnewpat:
  121. ******* calc position ****
  122. add.l   #1,MU_pospointer
  123. move.l  MU_pospointer,d0
  124. move.l  MU_data,a5
  125. cmp.l   240(a5),d0
  126. bhi     MU_setstart
  127. ***********************
  128. move.w  #1,MU_patterncount
  129. add.l   #2,MU_tablepos
  130. move.l  MU_tablepos,a0
  131. clr.l   d0
  132. move.w  (a0),d0
  133. move.l  MU_data,a0
  134. add.l   #444,a0
  135. add.l   d0,a0
  136. move.l  a0,MU_songpointer
  137. bra     MU_playit
  138. ************************
  139. MU_setstart:
  140. clr.l   MU_pospointer
  141. move.l  MU_data,MU_tablepos
  142. add.l   #242,MU_tablepos
  143. bra     MU_setnewpat
  144. MU_playit:
  145. move.l  MU_songpointer,a0
  146. add.l   #16,MU_songpointer
  147. move.l  (a0),d0
  148. clr.w   d3
  149. move.w  #1,d2
  150. bsr     MU_setinstr
  151. bsr     MU_seteffect
  152. move.l  4(a0),d0
  153. move.w  #2,d2
  154. bsr     MU_setinstr
  155. bsr     MU_seteffect
  156. move.l  8(a0),d0
  157. move.w  #3,d2
  158. bsr     MU_setinstr
  159. bsr     MU_seteffect
  160. move.l  12(a0),d0
  161. move.w  #4,d2
  162. bsr     MU_setinstr
  163. bsr     MU_seteffect
  164. move.w  d3,$dff096
  165. rts
  166. MU_setinstr:
  167. move.w  d0,d5
  168. and.w   #$f000,d0
  169. cmp.w   #0,d0
  170. bne     MU_setit
  171. rts
  172. MU_setit:
  173. swap    d0
  174. move.w  d0,d1
  175. clr.w   d0
  176. swap    d0
  177. lsr.w   #8,d0
  178. lsr.w   #4,d0
  179. sub.w   #1,d0
  180. lsl.w   #4,d0
  181. move.l  MU_data,a6
  182. add.l   d0,a6
  183. cmp.w   #1,d2
  184. bne     MU_conti1
  185. clr.w   $dff0a8
  186. move.l  a6,MU_chan0
  187. move.l  (a6),$dff0a0
  188. move.w  4(a6),$dff0a4
  189. move.w  d1,$dff0a6
  190. move.w  d1,MU_note0
  191. move.w  6(a6),MU_vol0
  192. clr.w   MU_slide0
  193. bset    #0,d3
  194. rts
  195. MU_conti1:
  196. cmp.w   #2,d2
  197. bne     MU_conti2
  198. clr.w   $dff0b8
  199. move.l  a6,MU_chan1
  200. move.l  (a6),$dff0b0
  201. move.w  4(a6),$dff0b4
  202. move.w  d1,$dff0b6
  203. move.w  d1,MU_note1
  204. move.w  6(a6),MU_vol1
  205. clr.w   MU_slide1
  206. bset    #1,d3
  207. rts
  208. MU_conti2:
  209. cmp.w   #3,d2
  210. bne     MU_conti3
  211. clr.w   $dff0c8
  212. move.l  a6,MU_chan2
  213. move.l  (a6),$dff0c0
  214. move.w  4(a6),$dff0c4
  215. move.w  d1,$dff0c6
  216. move.w  d1,MU_note2
  217. move.w  6(a6),MU_vol2
  218. clr.w   MU_slide2
  219. bset    #2,d3
  220. rts
  221. MU_conti3:
  222. clr.w   $dff0d8
  223. move.l  a6,MU_chan3
  224. move.l  (a6),$dff0d0
  225. move.w  4(a6),$dff0d4
  226. move.w  d1,$dff0d6
  227. move.w  d1,MU_note3
  228. move.w  6(a6),MU_vol3
  229. clr.w   MU_slide3
  230. bset    #3,d3
  231. rts
  232. MU_seteffect:
  233. move.w  d5,d6
  234. and.w   #$00ff,d5
  235. and.w   #$0f00,d6
  236. cmp.w   #0,d6
  237. beq     MU_effjump2
  238. cmp.w   #$0100,d6
  239. beq     MU_slideup
  240. cmp.w   #$0200,d6
  241. beq     MU_slidedown
  242. cmp.w   #$0300,d6
  243. beq     MU_setvolume
  244. cmp.w   #$0500,d6
  245. beq     MU_posjump
  246. cmp.w   #$0400,d6
  247. bne     MU_nobreak
  248. MU_itsabreak:
  249. move.w  #64,MU_patterncount
  250. rts
  251. MU_nobreak:
  252. cmp.w   #$0800,d6
  253. bne     MU_effjump0
  254. move.w  d5,MU_songstep
  255. rts
  256. MU_effjump0:
  257. cmp.w   #$0600,d6
  258. bne     MU_effjump1
  259. bclr    #1,$bfe001
  260. rts
  261. MU_effjump1:
  262. cmp.w   #$0700,d6
  263. bne     MU_effjump2
  264. bset    #1,$bfe001
  265. MU_effjump2:
  266. rts
  267. MU_posjump:
  268. clr.l   d4
  269. move.w  d5,d4
  270. sub.l   #1,d4
  271. move.l  d4,MU_pospointer
  272. add.l   #1,d4
  273. lsl.w   #1,d4
  274. sub.w   #2,d4
  275. move.l  MU_data,a0
  276. add.l   #244,a0
  277. add.l   d4,a0
  278. move.l  a0,MU_tablepos
  279. bra     MU_itsabreak
  280. MU_slideup:
  281. neg.w   d5
  282. MU_slidedown:
  283. cmp.w   #1,d2
  284. bne     MU_j1
  285. move.w  d5,MU_slide0
  286. rts
  287. MU_j1:
  288. cmp.w   #2,d2
  289. bne     MU_j2
  290. move.w  d5,MU_slide1
  291. rts
  292. MU_j2:
  293. cmp.w   #3,d2
  294. bne     MU_j3
  295. move.w  d5,MU_slide2
  296. rts
  297. MU_j3:
  298. move.w  d5,MU_slide3
  299. rts
  300. MU_setvolume:
  301. cmp.w   #1,d2
  302. bne     MU_j00
  303. move.w  d5,MU_vol0
  304. ;move.w  d5,$dff0a8
  305. rts
  306. MU_j00:
  307. cmp.w   #2,d2
  308. bne     MU_j22
  309. move.w  d5,MU_vol1
  310. ;move.w  d5,$dff0b8
  311. rts
  312. MU_j22:
  313. cmp.w   #3,d2
  314. bne     MU_j33
  315. move.w  d5,MU_vol2
  316. ;move.w  d5,$dff0c8
  317. rts
  318. MU_j33:
  319. move.w  d5,MU_vol3
  320. ;move.w  d5,$dff0d8
  321. rts
  322. MU_everyvert:
  323. move.w  MU_slide0,d0
  324. add.w   d0,MU_note0
  325. move.w  MU_note0,$dff0a6
  326. move.w  MU_slide1,d0
  327. add.w   d0,MU_note1
  328. move.w  MU_note1,$dff0b6
  329. move.w  MU_slide2,d0
  330. add.w   d0,MU_note2
  331. move.w  MU_note2,$dff0c6
  332. move.w  MU_slide3,d0
  333. add.w   d0,MU_note3
  334. move.w  MU_note3,$dff0d6
  335. btst    #0,MU_stop
  336. beq     MU_ok1
  337. bclr    #0,MU_stop
  338. move.l  MU_chan0,a0
  339. move.l  8(a0),$dff0a0
  340. move.w  12(a0),$dff0a4
  341. clr.l   MU_chan0
  342. MU_ok1:
  343. btst    #1,MU_stop
  344. beq     MU_ok2
  345. bclr    #1,MU_stop
  346. move.l  MU_chan1,a0
  347. move.l  8(a0),$dff0b0
  348. move.w  12(a0),$dff0b4
  349. clr.l   MU_chan1
  350. MU_ok2:
  351. btst    #2,MU_stop
  352. beq     MU_ok3
  353. bclr    #2,MU_stop
  354. move.l  MU_chan2,a0
  355. move.l  8(a0),$dff0c0
  356. move.w  12(a0),$dff0c4
  357. clr.l   MU_chan2
  358. MU_ok3:
  359. btst    #3,MU_stop
  360. beq     MU_ok4
  361. bclr    #3,MU_stop
  362. move.l  MU_chan3,a0
  363. move.l  8(a0),$dff0d0
  364. move.w  12(a0),$dff0d4
  365. clr.l   MU_chan3
  366. MU_ok4:
  367. move.w   #$8000,d3
  368. cmp.l    #0,MU_chan0
  369. beq      MU_okk1
  370. bset     #0,MU_stop
  371. bset     #0,d3
  372. MU_okk1:
  373. cmp.l    #0,MU_chan1
  374. beq      MU_okk2
  375. bset     #1,MU_stop
  376. bset     #1,d3
  377. MU_okk2:
  378. cmp.l    #0,MU_chan2
  379. beq      MU_okk3
  380. bset     #2,MU_stop
  381. bset     #2,d3
  382. MU_okk3:
  383. cmp.l    #0,MU_chan3
  384. beq      MU_okk4
  385. bset     #3,MU_stop
  386. bset     #3,d3
  387. MU_okk4:
  388. move.w   d3,$dff096
  389. move.w   MU_vol0,$dff0a8
  390. move.w   MU_vol1,$dff0b8
  391. move.w   MU_vol2,$dff0c8
  392. move.w   MU_vol3,$dff0d8
  393. rts
  394. ********** variables *****
  395. MU_stop:  dc.w 0
  396. MU_slide0: dc.w 0
  397. MU_slide1: dc.w 0
  398. MU_slide2: dc.w 0
  399. MU_slide3: dc.w 0
  400. MU_chan0: dc.l 0
  401. MU_chan1: dc.l 0
  402. MU_chan2: dc.l 0
  403. MU_chan3: dc.l 0
  404. MU_note0: dc.w 0
  405. MU_note1: dc.w 0
  406. MU_note2: dc.w 0
  407. MU_note3: dc.w 0
  408. MU_vol0: dc.w 0
  409. MU_vol1: dc.w 0
  410. MU_vol2: dc.w 0
  411. MU_vol3: dc.w 0
  412. MU_songspeed: dc.w 0
  413. MU_songstep: dc.w 5
  414. MU_patterncount: dc.w 0
  415. MU_songpointer: dc.l 0
  416. MU_tablepos: dc.l 0
  417. MU_pospointer: dc.l 0 
  418. MU_empty: blk.l 2,0
  419. MU_data: dc.l  0
  420. *************************************************
  421. *************************************************
  422.  
  423. MUSICDATA: blk.b  0,0   ;datablock
  424.